// function* fibonacco() {
//   var fn1 = fn2 = 1;
//   while(1) {
//     var current = fn2;
//     fn2 = fn1;
//     fn1 = fn1 + current;
//     var reset = yield current;
//     if (reset) {
//       fn1 = fn2 = 1;
//     }
//   }
// }
//
// var sequence = fibonacco(15);
// console.log(sequence.next().value); // 1
// console.log(sequence.next().value); // 1
// console.log(sequence.next().value); // 2
// console.log(sequence.next().value); // 3
// console.log(sequence.next().value); // 5
// console.log(sequence.next().value); // 8
// console.log(sequence.next().value); // 13
// console.log(sequence.next(true).value); // 1

// function* helloWorldGenerator() {
//   yield 'hello';
//   yield 'world';
//   return 'ending';
// }
//
// var hw = helloWorldGenerator();
// console.dir(hw.next());

var fetch = require('node-fetch');

function* gen(){
  var url = 'https://api.github.com/users/github';
  var result = yield fetch(url);
  console.log(result.name);
}

var g = gen();
var result = g.next();

result.value.then(function(data){
  return data.json();
}).then(function(data){
  g.next(data);
});

function* seq() {
    let n = 0;
    while (true) {
        if (n > 100) {
            return;
        }
        yield n;
        n += 1;
    }
}

for (let x of seq()) {
    console.dir(x);
}
